Accessing user messages at a hosted communications provider

ABSTRACT

A hosted communications provider or network supports communications to multiple users, each having associated accounts. The network includes memory storage device(s) for storing communications message(s) directed to one or more of the users. A web server module is configured to receive access requests for the user accounts; such requests originating from a user device. The network provides the requested access and sends the information using a non HTML format for at least a portion of the information. The user device displays the requested information on a display device. In some implementations, the information is sent to the user in a non-HTML format. In some implementations, at least a portion of the user interface is provided in a file format which does not include HTML.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a continuation of U.S. application Ser. No. 13/084,519, filed onApr. 11, 2011, which claims the benefit of priority under 35 U.S.C.§119(e) of U.S. Provisional Application No. 61/322,659, filed on Apr. 9,2010. The disclosures of the prior applications are considered part ofand are incorporated by reference in the disclosure of this application.

BACKGROUND

Networks that provide hosted voice, messaging, and data services tousers may be provided by a virtual private branch exchange (vPBX), whichhandles communications using a Voice over Internet Protocol (VoIP)service. To callers outside the network, the vPBX appears as atraditional PBX, enabling small businesses and organizations to providea consistent, professional customer-facing interfacing. VoIP provides amethod to deliver voice communications over the Internet rather thanthrough circuit-switched networks. The communications may originate andterminate at VoIP devices, or a gateway may be used to route calls fromthe Internet to a Public-Switched Telephone Network (PSTN). Some of theservices offered by these networks, or hosted communications providers,include the ability to process telephony calls, to transmit and receivevoicemail, to transmit and receive text and data messages, and/or totransmit and receive fax messages. User access the hosted communicationsto take advantage of these services. As user device types and messageformats increase, so too the complexity of the network increases.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example of a high-level block diagram of acommunications network.

FIG. 2 shows an example of an expanded block diagram view of a clientcomputer and a hosted communications provider as in FIG. 1.

FIG. 3 is an example of a flow chart illustrating a method for accessinguser messages.

FIG. 4 is an example of a diagram of a portion of a hosted communicationnetwork.

FIG. 5 shows an example of a system incorporating a network coupled toPSTN/IP gateways.

FIG. 6 shows such an example of a system that includes several pairs ofPoint-of Presence (POP) units.

FIG. 7 shows an example of a network that includes routers and SessionInitiation Protocol (SIP) proxy units with added functionality toidentify a POD associated with a user to a communication.

FIG. 8 shows an example of a Part of Data (POD) module.

FIG. 9 shows an example of two POD modules with respective routersreceiving a communication and process the communication by two pathsinvolving multiple POPs.

FIG. 10 shows an example of a PSTN/IP gateway coupled to a fax module.

FIG. 11 is an example of a block diagram of a generic processing devicethat may be used to execute methods and processes disclosed herein.

DETAILED DESCRIPTION

A hosted Private Branch Exchange (PBX) system provides services througha network cloud which performs as a traditional PBX. The cloud includesa configuration of servers coupling the system users to a large areanetwork, such as the Internet. A hosted PBX may provide unifiedcommunication systems and unified messaging systems integrate multipleservices for a user, making communication and messaging more flexible tothe activities and devices of the user. Unified Communications (UC)generally integrates real-time communication services, such as instantmessaging (chat), with non-real-time communication services, such ase-mail. Unified Messaging (UM) generally integrates non-real timecommunications, such as Voice Mail (VM), e-mail, texting, Short MessageServices (SMS), and fax. As users expand their mobility, variety ofdevices, and platforms, the complexity of UC and UM systems increases.

A hosted communications provider provides a variety of services to avariety of users. This matrix of operating devices, features andmessaging introduces challenges and advantages. The challenges involvesupporting a wide variety of services and enabling interoperability ofdevices. The advantages include the ability to deliver messages andcontent over a variety of channels, including different delivery andmessaging formats, and a variety of routing strategies. For example, amobile to landline communication may be routed from the mobile to acellular network to the Internet to the network; and from network to theInternet to a PSTN to a landline phone. Similarly, the users may sendtext messages while engaging in a conference call and receiving voicemail messages.

The example of communication system 100 implements user partitioning.The communication system 100 can be, for example, a hosted privatebranch exchange (PBX) system, which may also be referred to as a vPBX, acloud-based PBX, an internet telephony system, or an Internet Protocol(IP) PBX. Unlike a premise-based PBX, which requires PBX equipment to bephysically located on or near the user premises where the PBX servicesare to be provided, a hosted PBX can provide PBX communication servicesover the Internet, including services such as, without limitation, Voiceover Internet (VoI), Voice over IP (VoIP), facsimile over IP (FoIP),call forwarding, voicemail, web-based online account management, andother similar PBX functions. The communication system 100 may includedata centers (not shown), wherein each data center may be a point ofpresence having one or more servers, routers, switches, and/or networkconnections necessary to support the communication system 100. Each datacenter may be located in a same or different geographical location orregion.

Unified communication systems and unified messaging systems integratemultiple services for a user, making communication and messaging moreflexible to the activities and devices of the user. UnifiedCommunications (UC) generally integrates real-time communicationservices, such as instant messaging (chat), with non-real-timecommunication services, such as e-mail. Unified Messaging (UM) generallyintegrates non-real time communications, such as Voice Mail (VM),e-mail, texting, Short Message Services (SMS), and fax. As users expandtheir mobility, variety of devices, and platforms, the complexity of UCand UM systems increases.

In some implementations, a communication system for processing useraccounts in a hosted PBX system can include vPBX system. Such systemsmay provide UC and UM systems that enable users to send a message in onemedium and receive communications on another medium, including when themessage and communications are part of a communication string. Theexample of communication system implements user partitioning. Thecommunication system may be, for example, a hosted PBX system, acloud-based PBX, an internet telephony system, or an Internet Protocol(IP) PBX. Unlike a premise-based PBX, which requires PBX equipment to bephysically located on or near the user premises where the PBX servicesare to be provided, a hosted PBX can provide PBX communication servicesover the Internet, including services such as, without limitation, Voiceover Internet (VoI), Voice over IP (VoIP), facsimile over IP (FoIP),call forwarding, voicemail, web-based online account management, andother similar PBX functions. The communication system may include datacenters (not shown), wherein each data center may be a point of presencehaving one or more servers, routers, switches, and/or networkconnections necessary to support the communication system. Each datacenter may be located in a same or different geographical location orregion.

In some implementations, a communication system for processing useraccounts in a hosted PBX system provides UC and UM systems that enableusers to send a message in one medium and receive communications onanother medium, including when the message and communications are partof a communication string. In one example a unified messaging systemintegrates several different communications media to allow a user tosend and retrieve voice, fax, data, and other messages (e.g., e-mail,text, SMS) from a single interface, while allowing access to a varietyof devices, such as a telephone Land Line (LL), a fax device, a cellulartelephone, a Personal Computer (PC), other types of wireless devices,and so forth. The interface is a network, which processes communicationswith multiple devices. Some of the devices support multiple messagingprotocols, such as plain text, HTML, and others. A hosted network orcommunication provider, such as a vPBX, may support some or all of theseformats.

For example, messages may be sent in a plain text format. A plain textmessage is a widely accepted form of messaging; e-mail message readersare generally able to display text messages in plain text format. Across-platform messaging format allows document interchange betweensystems, which allows portability of files. One type of cross-platformmessaging format is the Rich Text Format (RTF). Another format is theHTML format which allows display of rich content in a message. Using anHTML mail format, the message is sent as an HTML page, including tags tochange the appearance of the text. The recipient's e-mail client programthen formats and displays the HTML.

It is possible to merge and/or combine multiple formats, such as to mixplain text with HTML. In this way, a network is able to send messages toexternal domains as plain text and as HTML.

The Multipurpose Internet Mail Extensions (MIME) is an Internet standardthat extends the format of e-mail to support non-text attachments,multiple part message bodies, American Standard Code for InformationInterchange (ASCII) and non ASCII text and header information.User-written Internet e-mail, as well as automated e-mail, is oftentransmitted via Simple Mail Transfer Protocol (SMTP) in MIME format.Internet e-mail may be referred to as SMTP/MIME e-mail. The contenttypes defined by MIME standards are applicable to a variety ofcommunication protocols, such as Hypertext Transfer Protocol (HTTP) forthe World Wide Web (WWW). HTTP specifies that data be transmitted in thecontext of e-mail-like messages, although the data most often is notactually e-mail.

The user-to-user encoding (uuencode) is a form of binary-to-textencoding, which is used to convert data to fairly common characterswhich will be understood by multiple systems. The program uudecodereverses the effect of uuencode, recreating the original binary fileexactly. These formats, uuencode/decode, became popular for sendingbinary files by e-mail and posting to news groups. MIME may be combinedwith a uuencode which merges two different methods of sending binaryattachments with messages.

The proliferation of wireless devices has added to the messaging formatsavailable. Short Message Service (SMS) is a simple, common type of textmessage supported by a large number of mobile phones. Proprietarymessaging, such as “Smart Messaging” by Nokia, allow users to createmessages with a variety of features. For example, such messaging mayallow pictures, ring tones, virtual business cards or other types ofnon-text data, all within a message that is often compatible with theSMS text standard. In other words, although these messages may containnon-text content, they still use SMS text data stream to communicate thedata.

The Multimedia Messaging Service (MMS) format also allows a user tocreate messages with text, picture, music and other content. MMSmessages may consist of multiple pages, each page with its own text,picture, music, and so forth. MMS is currently employed by many mobilephones.

A network may support a variety of messaging formats, and may furthersupport a variety of services and applications for users. Such a unifiedmessaging system includes a network, which may be implemented as one ormore servers, including a data memory to store messages, which mayinclude messages of different types and of different communicationsmedia (e.g., received messages, sent messages, voicemail messages, faxmessages, etc.). Messages may be grouped into message clusters, ormailboxes, associated with one or more individual user, or groups ofusers. In some embodiments, an individual message includes, but is notlimited to, a unique message index (e.g. identifiers), message content(e.g., voice, video, data), message properties (e.g., date and time,sender information), and message status (e.g., read, unread). Aparticular combination of message indexes and message statuses of themessages in a given message cluster is referred to as the state of themessages in the given cluster.

The system may further include a variety of devices for communication,each of the devices associated with or accessible by users. In someimplementations, the wireless devices support a Wireless Local AreaNetwork (WLAN) over the air protocol, such as those supporting Wi-Fi orBluetooth communications. The wireless devices may further supportmultiple wireless protocols.

A system may implement call processing techniques and methods whichprovide call routing to multiple of the devices. For example in onescenario, a voice call to a user is processed by a default path first,such as to a particular device, and then may be routed to another deviceaccording to routing rules. Such routing rules may direct the call to aLL telephone first, and then to a cellular telephone.

A user in such a hosted system, or hosted communications provider, hasan associated account which is accessed through the system. In oneexample, the network receives a communications message directed to auser of the hosted communications provider. The system stores thecommunications message in a local storage device, such as a memorystorage device or dedicated memory storage unit. As the system isconfigured to process digital communications according to and InternetProtocol (IP), the system is able to process web requests and has a webserver module. A web server module receives an access request from auser; the access request is to access the user's account and is sent bythe user through a web browser module installed on a client device. Theclient device supports web interactions and displays a user interfaceallowing the user to request access to the account and to view theinformation associated with the user account, which information isprovided by the web server module of the system. In the present example,the system responds to the access request by sending information to theuser's client device, wherein at least a portion of the user interfaceinformation is provided in a file format which does not includehypertext markup language (HTML) formatted data. The file format isintended for use by a display module working with the web browser moduleinstalled on the client device. The display module may be any of avariety of devices.

Users may access their stored messages from the hosted communicationsproviders in several ways. For example, users can access their messagesby retrieving them over a phone (mobile or landline), by receivingmessages in email attachments, by receiving them over a fax machine, orby using a web browser. When a web browser is used by a user to accessmessages, the user typically uses a web browser installed on a localcomputer (the client) to connect to a web server belonging to the hostedcommunications provider, and view the messages that have been stored inthe user's account. The user may also have the option to download themessages from the web server to the local computer. Typically, the userprovides a password to log in to a webpage that displays informationspecific to the user's account, which includes, but is not limited to:the messages available for viewing or retrieval, information associatedwith the messages such as the time the message was received or thesender's identification information, account settings and preferences,etc.

There are many different web browsers that a user can use to log in toan online account. When a user logs in to the user's account, the hostedcommunication provider's web server typically serves up a user interfacefor the user that is formatted using hypertext markup language (HTML).However, a user interface transmitted in html can look different,depending on which web browser is used to view the user interface. Thiscauses the user to have a different experience when logging in using onebrowser than with another, even though the user's account settings andpreferences may stay the same. HTML is also not as well-suited fordisplaying multimedia files or interactive webpages. It would bedesirable to provide a user with a uniform experience when viewing theuser's account online, regardless of which web browser is used.

FIG. 1 is an example of a block diagram of a communications network 100.The communications network 100 includes a hosted communications provider102, a packet-switched network (such as the Internet) 104, a PSTN 106, aPSTN-VoIP gateway 108, a cellular network 110, a client computer 111,and communication devices 112A-112F. The communication devices 112include a VoIP phone 112A, a computer 112B configured to runcommunications software applications (e.g. VoIP, voice, audio, video,facsimile, or data applications), a fax machine 112C, a telephone 112D,a cellular phone 112E, and a multi-mode phone 112F. It should be notedthat although client computer 111 and computer 112B are shown in FIG. 1as notebook computers, they are not limited to being notebook computers;any computing device such as a desktop computer, computing tablet,computing personal accessory, etc. can be considered to be a computer112B for the purposes of the description herein.

The hosted communications provider 102 is connected to the Internet 104.Transmissions to and from the hosted communications provider 102 betweenthe Internet 104 and the PSTN 106 pass through the PSTN-VoIP gateway108. The PSTN 106 is also in communication with the cellular network110.

The hosted communications provider 102 provides messaging services toits users via its connection 103 to the Internet 104. A user of thehosted communications provider 102 can initiate or receivecommunications from any of the communication devices 112A-112F shown inFIG. 1. The VoIP phone 112A and the computer 112B can communicate usinginternet protocols; they communicate with the hosted communicationsprovider 102 through the Internet 104. The fax machine 112C and thetelephone 112D are connected to the PSTN 106; their communications withthe hosted communications provider 102 pass through the PSTN-VoIPgateway 108. The PSTN-VoIP gateway 108 converts packets it receives fromthe Internet 104 into a format compatible for transmission across thePSTN 106, such as time-division multiplexing (TDM). The PSTN-VoIPgateway 108 also converts signals received from the PSTN 106 into IPpackets for transmission over the Internet 104.

The cellular phone 112E is connected to the cellular network 110; itcommunicates with the hosted communications provider 102 via thecellular network 110 to the PSTN 106 to the PSTN-VoIP gateway 108. Themulti-mode phone 112F can communicate with the hosted communicationsprovider 102 via either the cellular network 110 or through its ownconnection to the Internet 104. The number and types of communicationdevices 112 shown in FIG. 1 are not exhaustive, and other configurationsare possible. For example, a traditional analog telephone can beconnected to the Internet 104 (e.g., in place of the PSTN 106) by usingan Analog Telephone Adapter (ATA).

The hosted communications provider 102 provides VoIP and other mediaservices through its Internet connection. There are various protocolsused to send real-time multimedia (including voice and videocommunications) over the Internet 104. Session Initiation Protocol (SIP)is one protocol used to establish, transfer, and end sessions betweencommunication devices and the hosted communications provider 102 acrossthe Internet 104. The SIP signaling protocol is described further inRequest For Comments (RFC) 3261, entitled “SIP: Session InitiationProtocol,” by J. Rosenberg et al., June 2002, published by the InternetEngineering Task Force (IETF). Real-time Transport Protocol (RTP) isanother protocol used to transport multimedia data packets across theInternet. The RTP protocol is described further in RFC 3550, entitled“RTP: A Transport Protocol for Real-Time Applications,” by H.Schulzrinne et al., July 2003, published by the IETF. SIP and RTP areused herein as examples of protocols for illustrative purposes only, butthere are many other protocols that can be used in IP telephonyincluding, but not limited to: the protocols defined by theInternational Telecommunication Union Telecommunication StandardizationSector (ITU-T) H.323 standard, and proprietary protocols such as thoseused by Skype® VoIP Services, of Silver Lake Partners.

A caller can use any of the communication devices 112 shown in FIG. 1 toleave a voice, fax, or text message with a user of the hostedcommunications provider 102. For example, a caller can use the VoIPphone 112A to leave a voicemail message for the user. (The caller may ormay not be another user of the hosted communications provider 102). Thecaller initiates the call from the VoIP phone 112A, dialing a numberassociated with the user. The call is received by the hostedcommunications provider 102, which recognizes that the number belongs toone of its users. The caller leaves a voice message, which is receivedand stored by the hosted communications provider 102 for later access bythe user. Similarly, a caller can use the fax 112C to send a fax messageto the user, or cellular phone 112E to send a text message to the user.The voice, fax, or text message can all be received and stored by thehosted communications provider 102.

The message can reach the user in various ways. For example, the hostedcommunications provider 102 can email the message to the user as soon asit is received by attaching the message to the email, e.g. as an audiofile in the case of voicemail, or as an image file in the case of afacsimile. The user can also use a local client computer 111 to login tothe user's account at the hosted communications provider 102 to checkfor the availability of any messages, and to download messages asdesired to the user's local client computer. This latter method isdiscussed in further detail below.

FIG. 2 illustrates an expanded block diagram view of the client computer111 and the hosted communications provider 102 from FIG. 1. The hostedcommunications provider 102 includes telecom interface module 201, webserver 202, account database 204, and message storage device 206. Theclient computer 111 includes a web browser module 208, a display module210 that works with the web browser module 208, and a display controller217. The client computer 111 includes a client controller 213 whichperforms operations and implements computer-readable instructions storedin a memory storage unit 219.

As shown in FIG. 2, the client computer 111, the hosted communicationsprovider 102, and the VoIP phone 112A are connected to the Internet 104.As described in the previous example, a caller can leave a message 214for the user by calling the user's number. The call is received by thetelecom interface module 201 in the hosted communications provider 102.The telecom interface module 201 verifies with the account database 204that the number being called is associated with a valid account. Afterverification, the message 214 is stored in message storage device 206.As previously mentioned, the message 214 can include various formatssuch as voice, facsimile, text, or data. For example, a caller can usethe fax machine 112C to send a fax message to the user, or cellularphone 112E to send a text message to the user. Regardless of whether themessage is voice, fax, text, or data, the message 214 is received andstored in message storage device 206 by the hosted communicationsprovider 102. As illustrated, the hosted communications provider 102includes a controller 203 which acts to implement actions and respond tocomputer-readable instructions stored in the account database 204, webserver 202, telecom interface 201, memory storage 206 and other modules(not shown).

Once the message 214 is stored, the user can use a local client computer111 to log in to the user's account online to check for the availabilityof any messages, and to download messages as desired to the user's localclient computer 111. The local client computer 111 has a web browsermodule 208 installed for browsing the Internet 104. The web browsermodule 208 displays an application window on a monitor, screen or otheroutput display device (not shown) for the local client computer 111. Toaccess the user's account online, the user enters an address (such as aUniform Resource Locator, or “URL”) to the web browser module 208 thatpoints to the hosted communications provider's web server 202.

The first webpage returned by the web server 202 is typically a loginpage where the user provides a user name and a password to authenticatethe user. The web server 202 checks that the user name and passwordbelong to a valid account in the account database 204. Once the user isverified, the web server 202 sends a user interface 212 to the clientcomputer 111. The user interface 212 displays account-specificinformation to the user, such as a list of the messages stored for theuser, the account settings and preferences, and so forth. The userinterface 212 is provided in a file format specific to the displaymodule 210. The user interface 212 is interpreted by the display module210. The display module 210 interprets the user interface 212 anddisplays it through the web browser module 208. Display module 210 isnot a general HTML interpreter, and the user interface 212 is not inHTML. The file format of the user interface 212 is compatible with thedisplay module 210, but is generally not compatible with the web browsermodule 208 as a stand-alone application without the display module 210.

Display module 210 works with the web browser module 208, but may or maynot be included in the same application as the web browser module 208.For example, it can often be installed or downloaded as a separatecomponent. Display module 210 is sometimes referred to as a “plug-in” tothe web browser module 208 that extends the capabilities of the webbrowser module 208.

The display module 210 can be, for example, a version of the Adobe FlashPlayer® software, which is a cross-platform browser-based applicationruntime that enables viewing of expressive applications, content, andvideos across screens and browsers. If the display module 210 is anAdobe Flash Player® software, then the user interface 212 would be afile compatible with Adobe Flash Player® software, such as a file in theshockwave flash, referred to as swf, file format. The format of the userinterface 212 provided by the web server 202 should be compatible withthe display module 210 installed on the client computer 111. Otherdisplay modules and compatible file formats for the user interface mayalso be used.

In some implementations, the display module 210 is a proprietary moduledeveloped by the hosted communications provider 102 and provided to itsusers. In some implementations, the user interface 212 is also providedin a proprietary format to be used by the display module 210. Bydeveloping its own proprietary display module 210 and user interfacefile format, the hosted communications provider 102 retains greatercontrol over the appearance and functionality of the user interface 212.When the user interface 212 is designed and provided in a file formatspecifically intended for display module 210, more control may beretained over the appearance of the user interface 212, especiallyacross various types of web browsers. In some implementations, thedisplay module 210 is configured for a specified operation and the userinterface 212 is configured thereto.

In some implementations, the user interface 212 is provided in twoformats: an HTML format for the standard browser, and a format specificto the display module. The HTML portion of the user interface 212 isprovided to maintain a basic level of compatibility with browserswithout a display module 210 installed, but the display module format isthe primary way of providing account information to the user, and theprimary way for the user to configure, personalize, and access theuser's account.

The user interface 212 provides access to messages for the user storedin the message storage device 206. This access can be in the form oflinks to the messages, or other display items that can be selected bythe user. When a user selects a message link in the user interface 212,the display module 210 sends a request 216 back to the web server 202for the message.

The web server 202 receives the request 216 and retrieves the requestedmessage 218 from the message storage device 206. The web server 202 thenreturns the requested message 218 to the user. In some implementations,the requested message 218 can be displayed or played back directly bythe display module 210 in the web browser module 208. In someimplementations, the requested message 218 is downloaded to the localclient computer 111 for play back or display through a separateapplication

A user accesses messages stored in the network 102 by interfacing withthe web browser module and accessing the URL associated with the user'saccount. The system may partition or organize users in a variety ofways, and may assign a mailbox to each user. The network will oftenincorporate a user authentication process, whereby the user will enter auser identifier and a password, or some other security combination. Theprocessing involves the user requesting information stored as part ofthe user's account and then the user receiving the requestedinformation, such as a message from another party, in any of a varietyof formats.

FIG. 3 is an example of a flow chart illustrating a method for accessinguser messages. The hosted communications provider 102 receives acommunications message intended for the user, operation 302. The hostedcommunications provider 102 stores the communications message in amemory storage device 206, operation 304. The hosted communicationsprovider 102 receives an access request to access the user account,operation 306. The access request is from the web browser module 208installed on a client device associated with the user. The hostedcommunications provider 102 provides a user interface 212 to the clientdevice, operation 308, wherein in one example the user interface 212includes information associated with the user account. At least aportion of the user interface 212 is provided in a format which does notinclude HTML formatted code. The user's device, such as client computer111, receives the user interface 212; and the web browser module 208causes the user interface 212 information to display for the user.

A variety of examples are disclosed herein which provide for a messagingsystem, where a client device is configured to receive information fordisplay in multiple formats, including HTML and non HTML. Where theclient device is part of a hosted communication network, communicationsbetween the network and the client device are through an IP network,such as the Internet. The network receives messages and data informationfor the user and stores this information in a memory storage deviceaccessible on request from the user. When the network receives an accessrequest, the information is retrieved from the memory storage device andprepared for transmission to the client device. At least a portion ofthe information is prepared using a display format other than an HTMLformat. The information is received at the client device and displayedfor the user on a display module that supports the display format.

FIG. 4 shows an example of a diagram of a portion of a hostedcommunication network 1000, such as network 102 of FIG. 1, where thenetwork 1000 includes two Points of Presence (POP) units, 1002 and 1004.Each POP unit includes a server and configuration to processcommunications with the users supported therefrom. Each POP unitincludes a configuration for routing calls to the user. The POP unitsare provided in pairs, where a first POP A 1002 is active and a secondPOP B 1004 is redundant and dynamic. During operation, the POP A 1002handles all the call routing, and provides updates to call logs and userpreferences to store in POP B 1004. As indicated, the flow ofinformation is in one direction. As the active POP is the operationalunit processing communications and updating call logs and otherinformation which is stored in the database or memory storage unit. Thestored information includes call history and other user specifics. Theredundancy allows for system recovery and backup, however, such disasterrecovery may take several hours to implement if there is an actualfailure of the active POP A 1002.

FIG. 5 illustrates an example of a system 1050 incorporating the network1051, wherein the network 1051 is coupled to PSTN/IP gateways 1152,1153, 1154. The system 1050 has two POPs and is split into active anddisaster portion. The two portions are considers units, and are operatedso as to duplicate copies or twins. Each POP has a twin, where one twinruns is an Active Mode, while the other twin may be in a Disaster Modeor Stand-by Mode. In some implementations, the network 1051 isconfigured to couple to multiple gateways, such as gateway 1154, whereineach gateway may couple to a different service provider or type ofservice. For communications with users supported by the network 1051,the gateway 1152 receives signals from circuit-switched networks andtelecommunication networks, such as PSTN or a telephone company, and isalso coupled to an IP network. The gateway 1152 provides an interfaceallowing VoIP calls to be routed from a hosted communication system to atraditional telephone network. The network 1051 includes multiple SIPproxy units 1156, 1157 and 1158, each of which routes calls to TelephoneApplication Server (TAS) units 1160, 1162, 1164 and 1166. Each SIP proxyunit balances traffic among the TAS units. The TAS units each receiveinformation from the database (DB) 1168, which stores user informationincluding preferences, call processing instructions, and otheruser-specific information. The TAS units are smart routers, which notonly direct calls throughout the network 1051 but are also capable ofapplying rules and implementing call processing rules. For example, theTAS unit may retrieve information about a given user as to defaultdevice. Each TAS unit acts as a POP, where pairs of POPs provide for anactive POP and a disaster POP as discussed hereinabove. The system 1050provides a flexible, adaptive system for handing multiple users andinterfacing with a variety of telecommunications companies and gateways.Performance and capacity of the system 1050, however, is limited by thedatabase structure.

To improve the performance of the hosted communication system, multipleactive POPs can be provided. FIG. 6 illustrates an example of a system1100 that includes several pairs of POPs that are both active units.Each pair of active POPs makes up a Part of Data (POD) module. POP A1110 includes a unit 1 in each of PODs 2, 1104, 1106 and 1108; and POP B1112 includes a unit 2 in each of PODs 1102, 1104, 1106 and 1108. Inthis way, the unit 1 and unit 2 create a pair. To identify a particularunit of a POD, each POP is referred to as a unit, wherein POP A of POD1102 may be referred to as P1, U1; and POP B of POD 1102 may be referredto as P1, U2. The bi-directional arrow(s) between PODs indicates thatboth are active and operational, and the PODs share information duringoperation, such as call log updates.

The configuration of system 1000 may be used in a system 1250illustrated in FIG. 7, which includes a hosted communication network1251. Various sources may communicate with the network 1251 throughgateways, such as PSTN/IP gateway 1252, which each may be coupled to adifferent telephone company or other communication source. The gatewaysprovide the digitized signals to the network 1251. To process thesedigitized signals, the network 1251 includes routers 1256, 1258, whichcan be SIP proxy units with added functionality to identify the PODassociated with a user to a communication. The routers 1256, 1258 arebased on a SIP proxy unit for processing telecommunication signals, andis enhanced to provide routing capabilities based on user informationstored in a Global User Data (GUD) 1145 data or memory storage unit.Unlike the use of the SIP proxy unit for traffic and load balancing, theenhanced routers 1256, 1258, identify the location of the network userto a communication and the associated POD unit. The routers 1256, 1258obtain this information from the GUD 1268, 1269, respectfully, whicheach stores information mapping each user telephone number to the PODsupporting the user.

In some implementations, when a call is received at the routers 1256,1258, the routers 1256, 1258, the GUDs 1268, 1269 information is used toidentify the POD to which the calls are to be routed to reach the user.The GUDs 1268, 1269 may be any of a variety of memory storage devices.In some implementations, the GUDs 1268, 1269 may include additionalinformation relating to a user. The configuration allows for double ortwin active routing paths, where both routers 1256, 1258 are active. Inthis way, if either of routers 1256, 1258 has an operational problem, orit is desired or needed to stop operation for any period of time or toreplace hardware, the other active router is available so that anyimpact on user experience may be minimized.

In some implementations, any number of duplicated router devices forvarious other configurations can be implemented. Also, in someimplementations, other network components can be added between thegateway 1252 and the routers 1256, 1258 in other implementations. Eachof the routers 1256, 1258 may be located in different geographicallocations or may be co-located in one place. The routers 1256, 1258 maybe individual servers or may be partitions of a same server. Similarly,each of routers 1256, 1258 may be configured using multiple servers,such as in a server bank. In some implementations, each router may be anindividual server.

FIG. 8 illustrates an example of a POD module, such as POD 1102 of FIG.6. The routers 1256, 1258 include a SIP proxy module 1300, which isconfigured to support the SIP protocol for telecommunication, andTraffic Application Servers (TASs) 1302, 1304, 1306, 1308, which areused to interface with user devices (not shown). The TAS is a serverhaving computing capabilities and interfaces with a database (DB) 1310.The DB 1310 stores user-specific information used in operation of thenetwork and user device. The user-specific information may be in theform of data formatted for use by the TAS and user device. Theuser-specific information may be in the form of computer-readableinstructions used by or in coordination with the TAS to service the userdevice. The user-specific information may indicate an order of userdevices to contact for an in-coming call, such as to first route a callor transmission to a desk phone and then to a cell phone. The user mayspecify the user-specific information, such as during system set-up oron the fly. The user-specific information may be set by a networkadministrator, set by default, or set by the user. The user-specificinformation may store personal preferences, ringtones, messages,responses, on-hold instructions, and any of a variety of optionsavailable in the network. By routing the call to the POD supporting aspecific user, the POD then contains sufficient information to processthe communication to that specific user. The DB may be updated and theinformation made available to each TAS within a POD.

While FIG. 8 shows a portion of the POD 1102 that includes unit 1, insome implementations, the unit 2 of POD 1102 can be a duplicate ofunit 1. In some implementations, any number of TAS units also can beimplemented. The SIP proxy module 1300 operates to balance traffic andis in the network. The SIP proxy module 1300 has access to the status ofeach TAS and therefore assigns a TAS to a communication based on thestatus information. Such implementations may process communications in avariety of ways. When a communication, including voice calls andmessages, are received at the routers the network may provide variousrouting schemes.

FIG. 9 shows an example of two POPs having a respective router1412/1414, where routers 1412, 1414 receive a communication and processthe communication by two paths involving multiple POPs. Calls arehandled by a given POD, such as POD 1, which has a portion in multiplePOPS (e.g., POP 1 1402 and POP 2 1404). The portion of POD 1 in POP 11402 is unit 1, and the portion of POD 1 in POP 2 1404 is unit 2. Dataand update information is stored in both POP 1 1402 and POP 2 1404. Therouters 1412, 1414 are each coupled to individual GUDs storing the samemapping information, which maps an user identifier to a user device. Therouters 1412, 1414 support the SIP proxy protocols, while using themapping information from the GUD to route calls. The routers 1412, 1414are each coupled to multiple TAS modules for processing communications.Each TAS module is coupled to a data base storing user-specificinformation.

FIG. 10 shows an example of a PSTN/IP gateway 1402 coupled to a faxmodule 1404. As shown in FIG. 10, the PSTN/IP gateway 1402 can generateand transmit fax information to the fax module 1404. The fax informationis received from the gateway 1402 at the fax module 1404 (which also canbe configured to receive data in other formats in addition to fax data).The fax module 1404 forwards a notification to the user device throughthe TAS 1408 serving the user device. In some implementations, the faxmodule 1404 receives the data, converts the data into a designatedformat, and stores the formatted data for retrieval by the user of theuser device. In some implementations, the formatted data can be storedin user data file 1406, which is accessible from one or more accessmedia, such as email, mobile device interface, and the like. In someimplementations, the data file 1406 is updated at both active POPs in apair. In some implementations, the data file 1406 stored is stored atonly one POP. In some implementations, the data file 1406 is stored in acentral location accessible by users from various devices.

As presented herein, a hosted network expands coverage while guardingagainst server failures by providing duplicate POPs, which defines a PODas having one unit in each POP. Such application enables a SIP proxyrouter in each POP to access GUD information so as to route callsappropriately. The duplication allows either POP to operateindependently in case of a failure of the other unit.

Although the present invention has been described in detail withreference to particular embodiments, persons possessing ordinary skillin the art to which this invention pertains will appreciate that variousmodifications and enhancements may be made.

Generic Computing System

FIG. 11 is a block diagram of computing devices 1100, 1150 that may beused to implement the systems and methods described in this document, aseither a client or as a server or plurality of servers. Computing device1100 is intended to represent various forms of digital computers, suchas laptops, desktops, workstations, personal digital assistants,servers, blade servers, mainframes, and other appropriate computers.Computing device 1150 is intended to represent various forms of mobiledevices, such as personal digital assistants, cellular telephones,smartphones, and other similar computing devices. The components shownhere, their connections and relationships, and their functions, aremeant to be exemplary only, and are not meant to limit implementationsof the inventions described and/or claimed in this document.

Computing device 1100 includes a processor 1102, memory 1104, a storagedevice 1106, a high-speed interface 1108 connecting to memory 1104 andhigh-speed expansion ports 1110, and a low speed interface 1112connecting to low speed bus 1114 and storage device 1106. Each of thecomponents 1102, 1104, 1106, 1108, 1110, and 1112, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 1102 can processinstructions for execution within the computing device 1100, includinginstructions stored in the memory 1104 or on the storage device 1106 todisplay graphical information for a GUI on an external input/outputdevice, such as display 1116 coupled to high speed interface 1108. Inother implementations, multiple processors and/or multiple buses may beused, as appropriate, along with multiple memories and types of memory.Also, multiple computing devices 1100 may be connected, with each deviceproviding portions of the necessary operations (e.g., as a server bank,a group of blade servers, or a multi-processor system).

The memory 1104 stores information within the computing device 1100. Inone implementation, the memory 1104 is a computer-readable medium. Inone implementation, the memory 1104 is a volatile memory unit or units.In another implementation, the memory 1104 is a non-volatile memory unitor units.

The storage device 1106 is capable of providing mass storage for thecomputing device 1100. In one implementation, the storage device 1106 isa computer-readable medium. In various different implementations, thestorage device 1106 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In one implementation, acomputer program product is tangibly embodied in an information carrier.The computer program product contains instructions that, when executed,perform one or more methods, such as those described above. Theinformation carrier is a computer- or machine-readable medium, such asthe memory 1104, the storage device 1106, or memory on processor 1102.

The high speed controller 1108 manages bandwidth-intensive operationsfor the computing device 1100, while the low speed controller 1112manages lower bandwidth-intensive operations. Such allocation of dutiesis exemplary only. In one implementation, the high-speed controller 1108is coupled to memory 1104, display 1116 (e.g., through a graphicsprocessor or accelerator), and to high-speed expansion ports 1110, whichmay accept various expansion cards (not shown). In the implementation,low-speed controller 1112 is coupled to storage device 1106 andlow-speed expansion port 1114. The low-speed expansion port, which mayinclude various communication ports (e.g., USB, Bluetooth, Ethernet,wireless Ethernet) may be coupled to one or more input/output devices,such as a keyboard, a pointing device, a scanner, or a networking devicesuch as a switch or router, e.g., through a network adapter.

The computing device 1100 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 1120, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 1124. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 1122. Alternatively, components from computing device 1100 maybe combined with other components in a mobile device (not shown), suchas device 1150. Each of such devices may contain one or more ofcomputing device 1100, 1150, and an entire system may be made up ofmultiple computing devices 1100, 1150 communicating with each other.

Computing device 1150 includes a processor 1152, memory 1164, aninput/output device such as a display 1154, a communication interface1166, and a transceiver 1168, among other components. The device 1150may also be provided with a storage device, such as a microdrive orother device, to provide additional storage. Each of the components1150, 1152, 1164, 1154, 1166, and 1168, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 1152 can process instructions for execution within thecomputing device 1150, including instructions stored in the memory 1164.The processor may also include separate analog and digital processors.The processor may provide, for example, for coordination of the othercomponents of the device 1150, such as control of user interfaces,applications run by device 1150, and wireless communication by device1150.

Processor 1152 may communicate with a user through control interface1158 and display interface 1156 coupled to a display 1154. The display1154 may be, for example, a TFT LCD display or an OLED display, or otherappropriate display technology. The display interface 1156 may compriseappropriate circuitry for driving the display 1154 to present graphicaland other information to a user. The control interface 1158 may receivecommands from a user and convert them for submission to the processor1152. In addition, an external interface 1162 may be provide incommunication with processor 1152, so as to enable near areacommunication of device 1150 with other devices. External interface 1162may provide, for example, for wired communication (e.g., via a dockingprocedure) or for wireless communication (e.g., via Bluetooth or othersuch technologies).

The memory 1164 stores information within the computing device 1150. Inone implementation, the memory 1164 is a computer-readable medium. Inone implementation, the memory 1164 is a volatile memory unit or units.In another implementation, the memory 1164 is a non-volatile memory unitor units. Expansion memory 1174 may also be provided and connected todevice 1150 through expansion interface 1172, which may include, forexample, a SIMM card interface. Such expansion memory 1174 may provideextra storage space for device 1150, or may also store applications orother information for device 1150. Specifically, expansion memory 1174may include instructions to carry out or supplement the processesdescribed above, and may include secure information also. Thus, forexample, expansion memory 1174 may be provide as a security module fordevice 1150, and may be programmed with instructions that permit secureuse of device 1150. In addition, secure applications may be provided viathe SIMM cards, along with additional information, such as placingidentifying information on the SIMM card in a non-hackable manner.

The memory may include for example, flash memory and/or MRAM memory, asdiscussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 1164, expansionmemory 1174, or memory on processor 1152.

Device 1150 may communicate wirelessly through communication interface1166, which may include digital signal processing circuitry wherenecessary. Communication interface 1166 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 1168. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS receiver module 1170 may provide additional wireless datato device 1150, which may be used as appropriate by applications runningon device 1150.

Device 1150 may also communication audibly using audio codec 1160, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codex 1160 may likewise generate audiblesound for a user, such as through a speaker, e.g., in a handset ofdevice 1150. Such sound may include sound from voice telephone calls,may include recorded sound (e.g., voice messages, music files, etc.) andmay also include sound generated by applications operating on device1150.

The computing device 1150 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 1180. It may also be implemented as part of asmartphone 1182, personal digital assistant, or other similar mobiledevice.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product (e.g.,non-transitory), apparatus and/or device (e.g., magnetic discs, opticaldisks, memory, Programmable Logic Devices (PLDs)) used to providemachine instructions and/or data to a programmable processor, includinga machine-readable medium that receives machine instructions as amachine-readable signal. The term “machine-readable signal” refers toany signal used to provide machine instructions and/or data to aprogrammable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinventions or of what may be claimed, but rather as descriptions offeatures specific to particular implementations of particularinventions. Certain features that are described in this specification inthe context of separate implementations can also be implemented incombination in a single implementation. Conversely, various featuresthat are described in the context of a single implementation can also beimplemented in multiple implementations separately or in any suitablesubcombination. Moreover, although features may be described above asacting in certain combinations and even initially claimed as such, oneor more features from a claimed combination can in some cases be excisedfrom the combination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

What is claimed is:
 1. (canceled)
 2. A method comprising: receiving amessage intended for a user having an account with a hostedcommunications provider; associating the message with the account andstoring the message in a storage device; receiving a request to accessthe account; providing, for presentation in a user interface on a clientdevice, information associated with the account and data identifying themessage, wherein at least a portion of the information is provided in aformat other than hyper-text markup language (HTML); receiving, from theclient device, a request to access the message; and providing themessage to the client device.
 3. The method of claim 2, wherein thestorage device stores messages of a plurality of different message typesthat are associated with the account.
 4. The method of claim 3 whereinthe provided information further comprises information identifying themessages of the plurality of different message types.
 5. The method ofclaim 4, wherein providing the information comprises providing theinformation for presentation in a user interface that allows the user toaccess messages of the plurality of different message types.
 6. Themethod of claim 5, wherein the user interface allows for viewing ofmessages of the plurality of different message types.
 7. The method ofclaim 6, wherein at least a portion of the user interface is in theformat other than HTML.
 8. The method of claim 7, wherein the formatother than HTML is a format compatible with the Adobe Flash Player. 9.The method of claim 5, further comprising providing the user interfaceto the client device upon the client device successfully performing alogin procedure to authenticate the user.
 10. The method of claim 2,wherein providing the information comprises providing the information tothe client device over a packet-switched network, a cellular network, ora Public-Switched Telephone Network (PSTN).
 11. A system comprising oneor more computers and one or more storage devices storing instructionsthat when executed by the one or more computers cause the one or morecomputers to perform operations comprising: receiving a message intendedfor a user having an account with a hosted communications provider;associating the message with the account and storing the message in astorage device; receiving a request to access the account; providing,for presentation in a user interface on a client device, informationassociated with the account and data identifying the message, wherein atleast a portion of the information is provided in a format other thanhyper-text markup language (HTML); receiving, from the client device, arequest to access the message; and providing the message to the clientdevice.
 12. The system of claim 11, wherein the storage device storesmessages of a plurality of different message types that are associatedwith the account.
 13. The system of claim 12, wherein the providedinformation further comprises information identifying the messages ofthe plurality of different message types.
 14. The system of claim 13,wherein providing the information comprises providing the informationfor presentation in a user interface that allows the user to accessmessages of the plurality of different message types.
 15. The system ofclaim 14, wherein the user interface allows for viewing of messages ofthe plurality of different message types.
 16. The system of claim 15,wherein at least a portion of the user interface is in the format otherthan HTML.
 17. The system of claim 16, wherein the format other thanHTML is a format compatible with the Adobe Flash Player.
 18. The systemof claim 14, the operations further comprising providing the userinterface to the client device upon the client device successfullyperforming a login procedure to authenticate the user.
 19. The system ofclaim 11, wherein providing the information comprises providing theinformation to the client device over a packet-switched network, acellular network, or a Public-Switched Telephone Network (PSTN).
 20. Acomputer storage medium encoded with a computer program, the computerprogram comprising instructions that when executed by the one or morecomputers cause the one or more computers to perform operationscomprising: receiving a message intended for a user having an accountwith a hosted communications provider; associating the message with theaccount and storing the message in a storage device; receiving a requestto access the account; providing, for presentation in a user interfaceon a client device, information associated with the account and dataidentifying the message, wherein at least a portion of the informationis provided in a format other than hyper-text markup language (HTML);receiving, from the client device, a request to access the message; andproviding the message to the client device.
 21. The computer storagemedium of claim 20, wherein the storage device stores messages of aplurality of different message types that are associated with theaccount.